<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>this</title>
</head>
<body>
<!--     
    1.this 是什么？
        - 任何函数本质上都是通过某个对象来调用的，
            如果没有直接指定，就是window
        - 所有函数内部都有一个变量 this
        - 他的值是调用函数的当前对象
    2.如何确定 this的值？
            this 的指向
        - test()：  window
        - p.test()：  p
        - new.test()： 新创建的对象
        - p.call(obj1)： obj1
 -->
<script type="text/javascript">

    function Person(color){
        console.log(this)
        this.color = color;
        this.getColor = function(){
            console.log(this)
            return this.color;

        };
        this.setColor = function (color){
            console.log(this)
            this.color = color;
        };
    }

    Person('red'); // this 是谁 window

    var p = new Person('yellow'); //this 是谁 p

    p.setColor(); //this 是谁   p

    var obj = {};
    p.setColor.call(obj,'black') // this 是谁 obj

    var test = p.setColor;
    test();  //this 是谁 window

    function fun1(){
        function fun2(){
            console.log(this)
        }
        fun2() // this 是谁 window 因为是fun1调用的
    }
    fun1();

</script>
</body>
</html>